#include<stdio.h>
#define MAXX 100
void LCS(int A[],int m,int B[],int n,int C[],int *k){
	int pa=0,pb=0,pc=1,maxk=0;
	int dp[105]={0};
	int temp[105][105]={0},line=0,ans=0;
	int tk=0;
	for(int j=0;j<n;j++){
		pb=j;
		for(int i=0;i<m;i++){
			if(A[i]==B[pb]){
				if(dp[i]<tk+1&&i>=pa){
					dp[i]=++tk;
					temp[line][pc++]=A[i];
					pa=i;
				}
				else if(dp[i]<tk+1&&i<pa){
					temp[line][0]=tk;
					tk=0,pc=1;
					dp[i]=++tk;
					temp[++line][pc++]=A[i];
					pa=i;
				}
				break; 
			}
		}
		temp[line][0]=tk;
	}
	for(int i=0;i<=line;i++){
			if(tk<temp[i][0]){
				tk=temp[i][0];
				ans=i;
			}
		}
	for(int i=1;i<=tk;i++)
		C[i-1]=temp[ans][i];
	*k=tk;
	return;
}
int check(int A[],int m, int B[], int n){
   int ib=0;
   
   for (int i=0;i<m;i++){
     while(ib<n && A[i] != B[ib]) ib++;
     if (ib>=n) return -1;     
   }
   return 1;
}
int main(){
	int m,n,k;
	int A[MAXX],B[MAXX],C[MAXX];
   scanf("%d %d",&m,&n);
   for(int i=0;i<m;i++)
     scanf("%d",&A[i]);
   for(int i=0;i<n;i++)
     scanf("%d",&B[i]);   
   int K;
   LCS(A,m,B,n,C,&K);
   printf("%d\n",K);
   for(int i=0;i<K;i++)
   	printf("%d,",C[i]);
   if (check(C,K,A,m)==1 && check(C,K,B,n)==1 )   
     printf("%d",K);
   return 1;
}
